\documentclass{ctexbeamer}
\usepackage{listings}%插入代码
\usepackage{geometry}%设置页面大小边距等
\usepackage{graphicx}%插入图片
\usepackage{amssymb}%为了用\mathbb
\usepackage{amsmath}%数学方程的显示
\usepackage{listings}%插入代码
\usepackage{lastpage}%总页数
\usepackage{hyperref}%引用网页

\hypersetup{%设置网页链接颜色等
    colorlinks=true,%链接将会有颜色，默认是红色
    linkcolor=blue,%内部链接，那些由交叉引用生成的链接将会变为蓝色（blue）
    filecolor=magenta,%链接到本地文件的链接将会变为洋红色（magenta）
    urlcolor=blue,%链接到网站的链接将会变为蓝绿色（cyan）
    }
\usepackage[backend=biber,style=numeric,sorting=none]{biblatex}
\addbibresource{reference.bib} %BibTeX数据文件及位置
\setbeamerfont{footnote}{size=\tiny} %调整注脚的文字大小

\usetheme{Madrid}
\pgfdeclareimage[height=2.0cm]{university-logo}{../figures/School.png}%设置logo
\logo{\pgfuseimage{university-logo}}
\title{Julia集的分析和探索}
\author{陈冠宇\ 3200102033}
\institute{数学与应用数学}
\centering
\date{\today}
\begin{document}
\maketitle

\begin{frame}{目录}{}
    \tableofcontents
\end{frame}

\begin{frame}{引言与背景介绍}
\section{引言}
\begin{block}{引言}
    \scriptsize{\qquad 在\emph{HW04}中我们已经了解了关于\emph{Mandelbrot Set},即，\emph{Mandelbrot Set}由
\begin{equation}
  z_{n+1}=z_n^2+C
\end{equation}
产生,此时$C\in \mathbb{C}$为固定值。但我们不妨在$z_0$固定后，将$C$作变化,此时对于不同的$C$,我们可以得到不同的集合。这些集合便是\emph{Julia Set}.}
\end{block}
\section{问题的背景介绍}
\begin{block}{问题的背景介绍}
 \scriptsize{\qquad Julia集合以法国数学家加斯顿·朱莉娅(Gaston Julia)的名字命名，他在1915年研究了这些集合的性质，并在1918年发表了著名的论文\emph{Mémoire sur l'itération des fonctions rationnelles}。虽然Julia集现在与(1)中的二次多项式相关联，但Julia对更一般表达式的迭代性质感兴趣.

 \qquad 由等式(1)定义的Julia集有各种形状，C的一个小变化可以极大地改变Julia集的形状。1979年，在计算机的帮助下，B.B.Mandelbrot研究了Julia集，试图对所有可能的形状进行分类，并提出了一种新的形状：Mandelbrot集。}\footfullcite{ComplexAnalysis}
\end{block}
\end{frame}

\begin{frame}{数学理论}
\section{数学理论}
\subsection{逃逸准则}
\begin{theorem}
  \scriptsize{对于}\tiny{$z_n=x_n+iy_n\in \mathbb{C},|z_n|=\sqrt{x_n^2+y_n^2}$},\scriptsize{若对于一个复数序列}\tiny{$\{z_1,z_2,\cdots,z_n\}$,$|z_i|>max{\{2,|c|\}}$ },\scriptsize{则序列将逃逸到无穷大。}
\end{theorem}

\begin{block}{\emph{Proof}}
  \scriptsize{当} \tiny{$ \left|z_{j}\right|>\max (2,|c|) $}，\scriptsize{ 则}

 \scriptsize{1. 由}\tiny{$\left|z_{j}\right|>2$}\scriptsize{可知}
 \tiny{\begin{equation}
   \begin{split}
        & \left|z_{j}\right|=2+\epsilon \\
       &|z_{j}^{2}|=\left|z_{j}^{2}+c-c\right|\geq\left|z_{j}^{2}+c\right|+|c|
   \end{split}
 \end{equation}}
 \scriptsize{因此，我们得到}
 \tiny{\begin{equation}
    \begin{split}
       |z_{j+1}| &= |z_{j}^{2}+c| \geq |z_{j}^{2}|-|c| =|z_{j} |^{2}-|c| \\
         & > |z_{j}|^{2} - |z_{j}| > |z_{j}|(|z_{j}|-1) > |z_{j}|(1+\epsilon)
    \end{split}
 \end{equation}}
 \scriptsize{那么在k次迭代后，我们得到}\tiny{$|z_{j+k}^{2}+c| > |z_{j}|(1+e)^{k}$\\
 $\Rightarrow$}\scriptsize{序列趋于无穷}
\end{block}
\end{frame}

\begin{frame}
\begin{block}{\emph{Proof}}
 \scriptsize{2. 如果} \tiny{$ |c| \geq 2$,}\scriptsize{可得}\tiny{$z_{0}=0, z_{1}=c, \quad z_{2}=c(c+1)$}

 \scriptsize{由}\tiny{$$|c+1|>1,\left|c^{2}+c\right|>|c|$$
 $\Rightarrow$ $$\frac{|z_2|}{|z_1|}=\frac{|c^{2}+c|}{|c|}>1$$}

 \scriptsize{则对于}\tiny{$\forall z_{j},\epsilon >1$，设$|z_{j}|=p>1$，}\scriptsize{我们有}  \tiny{$\frac{|z_{j+1}|}{|z_{j}|} >\epsilon$}

 \scriptsize{归纳得序列趋于无穷。}
 \footfullcite{OrangeKiller}
\end{block}

\end{frame}

\begin{frame}[fragile]{算法实现}
\section{算法实现}
\subsection{具体代码}
\begin{block}{具体代码}
\scriptsize{可以参考} \href{https://gitee.com/Zebrainy-cgy/math-soft/tree/master/fourth/bitmap-master/src} {\scriptsize{Click Here: My Gitee}}
\end{block}
\subsection{Window.h}
\begin{block}{Window.h}
\scriptsize{在Window.h中我们定义了Window类，要求用户输入原点坐标信息和范围。E.g.$dimension=5$代表图片最右边代表坐标$(5,0)$,最左边代表 $(-5,0)$.以及关于迭代常数的信息,E.g.0 0.64代表cx(C的横坐标)=0，cy(C的纵坐标)=0.64,$(C=0+0.64i)$}

\scriptsize{\begin{lstlisting}[frame=single,basicstyle=\ttfamily,columns=flexible]
var height,width:           int     %高宽
var _ox,_oy,dimension:      double  %原点横纵坐标，页面范围
lpp <- dimension*2/width;
\end{lstlisting}}
\end{block}

\subsection{Julia.h}
\begin{block}{Julia.h}
\scriptsize{ 定义\emph{Julia}类}
\scriptsize{\begin{lstlisting}[frame=single,basicstyle=\ttfamily,columns=flexible]
forward_step();             %继续迭代
stop_criterion();           %迭代停止，返回flag_stop = true
is_disconvergence();        %判断不收敛，返回flag_disconvergence = true
\end{lstlisting}}
\end{block}
\end{frame}


\begin{frame}[fragile]{主函数Julia.cpp}
\subsection{主函数Julia.cpp}
\begin{block}{\scriptsize{伪代码：}}
\tiny{\begin{lstlisting}[frame=single,basicstyle=\ttfamily,columns=flexible]
var *cache:                     char[width*height*3]    %存放三原色信息
var pos,width,height,x,y,N:     int                     %坐标处颜色信息，宽高（单位：像素）,横纵坐标,迭代最大次数
var Julia:                      Julia
var cx,cy:                      double                  %C的横纵坐标
for i: = 0 to height
    for j: = 0 to width
        x <- ox + lpp * i;      y <- oy + lpp * j;      pos <- width*j + i;
        call Julia({x,y},N,{cx,cy})；
        while flag_stop != true
            do
            call forward_step
            if flag_disconvergence = true
                then break
            end if
        end while
        if flag_stop = true
            then
                cache[pos*3] <- 255;        cache[pos*3+1] <- 255;      cache[pos*3+2] <- 255;
            else
                cache[pos*3] <- 0;          cache[pos*3+1] <- 0;        cache[pos*3+2] <- 0;
        end if
    end for
end for
call build_bmp with width, height and cache %#include "bitmap.h"
\end{lstlisting}}
\end{block}
\end{frame}

\begin{frame}{数值算例input:0 0 3}
\section{数值算例input:0 0 3}
\subsection{不同C对应的$Julia$集}
不同C的$Julia$集
\begin{figure}[htbp]
  \centering
  \begin{minipage}[t]{0.2\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/1.png}
    \caption{\tiny{$C_0=(0,0)$}}
  \end{minipage}
  \begin{minipage}[t]{0.2\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/2.png}
    \caption{\tiny{$C_0=(0,0)$}}
  \end{minipage}
  \begin{minipage}[t]{0.2\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/3.png}
    \caption{\tiny{$C_0=(0,0)$}}
  \end{minipage}
  \begin{minipage}[t]{0.2\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/4.png}
    \caption{\tiny{$C_0=(0,0)$}}
  \end{minipage}

  \begin{minipage}[t]{0.2\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/(0,0).bmp}
    \caption{\tiny {$C_0=(0,0)$}}
  \end{minipage}
  \begin{minipage}[t]{0.2\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/(0,0.64i).bmp}
    \caption{\tiny{$C_0=(0,0.64i)$}}
  \end{minipage}
  \begin{minipage}[t]{0.2\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/(-0.74,0).bmp}
    \caption{\tiny{$C_0=(-0.74,0)$}}
  \end{minipage}
  \begin{minipage}[t]{0.2\textwidth}
    \centering
    \includegraphics[width=1.1\textwidth]{../figures/(0.39,0.21i).bmp}
    \caption{\tiny{$C_0=(0.39,0.21)$}}
  \end{minipage}
\end{figure}
\footfullcite{ComplexAnalysis}
\end{frame}

\begin{frame}{数值算例input:0 0 3}

\subsection{$Mandelbrot$集实现}
\begin{block}{\scriptsize{$Mandelbrot$集}}
\scriptsize{关于Mandelbrot集的实现只需要将$(x,y)$固定为$(0,0)$，$(cx,cy)$替换为$(x,y)$即可。具体代码可以参考}\href{https://gitee.com/Zebrainy-cgy/math-soft/tree/master/fourth/bitmap-master/src} {\scriptsize{Click Here: My Gitee}}
\end{block}
\begin{figure}[htbp]
  \centering
  \begin{minipage}[t]{0.4\textwidth}
    \centering
    \includegraphics[width=1\textwidth]{../figures/web.png}
    \caption{\small {From Web:\href{https://complex-analysis.com/content/julia_set.html}{Click Here}}}
  \end{minipage}
  \begin{minipage}[t]{0.4\textwidth}
    \centering
    \includegraphics[width=1\textwidth]{../figures/test.bmp}
    \caption{\small{$Mandelbrot$集}}
  \end{minipage}

\end{figure}
\end{frame}

\begin{frame}{总结}
\section{Julia Set \& Mandelbrot Set}
\begin{block}{Julia Set \& Mandelbrot Set}
\qquad 由于Mandelbrot集的定义，Mandelbrot集在给定点的几何与相应Julia集的结构之间存在密切的对应关系。换句话说，Mandelbrot集形成了Julia集的一种索引，每一个C对应一个独特的$Julia$集。

\qquad Julia集是连通或断开的，从Mandelbrot集内选择的c值是连通的，而从Mandelbrot集外选择的c值是断开的。断开连接的集合通常被称为尘埃，它们由单个点组成.
\footfullcite{ComplexAnalysis}
\end{block}
\end{frame}


\end{document} 